﻿using System;
using Company.BLL;
using Company.BLL.DuLieuChuan;
using Company.BLL.KDT.SXXK;
using Janus.Windows.GridEX;
using Janus.Windows.UI.CommandBars;

namespace Company.Interface.KDT.SXXK
{
    public partial class NguyenPhuLieuDangKyDetailForm : BaseForm
    {
        public NguyenPhuLieuDangKy NPLDangKy = new NguyenPhuLieuDangKy();

        //-----------------------------------------------------------------------------------------
        public NguyenPhuLieuDangKyDetailForm()
        {
            InitializeComponent();
        }

        #region Private methods.

        //-----------------------------------------------------------------------------------------
        private void NguyenPhuLieuDangKyDetailForm_Load(object sender, EventArgs e)
        {
            this.NPLDangKy.LoadNPLCollection();
            dgList.DataSource = this.NPLDangKy.NPLCollection;
            switch (this.NPLDangKy.TrangThaiXuLy)
            {
                case -1: 
                    lblTrangThai.Text = "Chưa gửi thông tin";
                    break;
                case 0:
                    lblTrangThai.Text = "Chờ duyệt chính thức";
                    break;
                case 1:
                    lblTrangThai.Text = "Đã duyệt chính thức";
                    break;
                case 2:
                    lblTrangThai.Text = "Không phê duyệt";
                    break;

            }
            txtSoTiepNhan.Text = this.NPLDangKy.SoTiepNhan.ToString();
            txtMaHaiQuan.Text = this.NPLDangKy.MaHaiQuan;
            txtTenHaiQuan.Text = DonViHaiQuan.GetName(this.NPLDangKy.MaHaiQuan);
            if (this.OpenType == OpenFormType.View)
            {
                TopRebar1.Visible = false;
                dgList.AllowDelete = InheritableBoolean.False;
            }
            else
            {
                TopRebar1.Visible = true;
                dgList.AllowDelete = InheritableBoolean.True;
            }
        }

        //-----------------------------------------------------------------------------------------
        /// <summary>
        /// Thêm mới nguyên phụ liệu.
        /// </summary>
        private void add()
        {
            NguyenPhuLieuEditForm f = new NguyenPhuLieuEditForm();
            f.OpenType = OpenFormType.Insert;
            f.MaHaiQuan = txtMaHaiQuan.Text;
            f.MaDoanhNghiep = GlobalSettings.MA_DON_VI;
            f.NPLCollection = this.NPLDangKy.NPLCollection;
            f.nplDangKy = NPLDangKy;
            f.ShowDialog();

            if (f.NPLDetail != null)
            {
                NguyenPhuLieu npl = f.NPLDetail;
                npl.Master_ID = this.NPLDangKy.ID;
                this.NPLDangKy.NPLCollection.Add(npl);
                npl.Insert();
                dgList.Refetch();
            }
        }

        //-----------------------------------------------------------------------------------------

        //private void upload()
        //{
        //    try
        //    {
        //        this.Cursor = Cursors.WaitCursor;
        //        string[] danhsachDaDangKy = new string[0];

        //        WSForm wsForm = new WSForm();
        //        wsForm.ShowDialog(this);
        //        if (!wsForm.IsReady) return;

        //        int ret = this.NPLDangKy.WSUpload(ref danhsachDaDangKy);

        //        // Thực hiện kiểm tra.
        //        switch(ret)
        //        {
        //            case 0:
        //                ShowMessage("Cập nhật không thành công!\nCó lỗi hệ thống.", false);
        //                this.setNeedUpload(true);
        //                break;
        //            case 1:
        //                ShowMessage("Cập nhật thành công!", false);
        //                this.setNeedUpload(false);
        //                break;
        //            case 2:
        //                if (ShowMessage("Cập nhật không thành công!\nDo chứng từ này đã được duyệt rồi.\nVậy bạn có muốn cập nhật dữ liệu từ Hải quan không?", true) == "Yes")
        //                {
        //                    this.NPLDangKy.WSDownload();
        //                }
        //                this.setNeedUpload(false);
        //                break;
        //            case 3:
        //                ShowMessage("Cập nhật không thành công!\nCó một số nguyên phụ liệu đã được đăng ký rồi (các dòng màu đỏ).\nVui lòng kiểm tra lại!", false);
        //                this.updateRowsOnGrid(danhsachDaDangKy);
        //                this.setNeedUpload(true);
        //                break;
        //        }
        //    }
        //    catch (Exception ex)
        //    {
        //        MessageBox.Show(ex.Message);
        //    }
        //    finally
        //    {
        //        this.Cursor = Cursors.Default;
        //    }
        //}

        //-----------------------------------------------------------------------------------------


        ///// <summary>
        ///// Gửi thông tin đăng ký đến Hải quan.
        ///// </summary>
        //private void send()
        //{
        //    try
        //    {
        //        this.Cursor = Cursors.WaitCursor;
        //        this.NPLDangKy.LoadNPLCollection();
        //        if (this.NPLDangKy.NPLCollection.Count == 0)
        //        {
        //            ShowMessage("Danh sách nguyên phụ liệu rỗng.\nKhông thể thực hiện khai báo thông tin đến Hải quan.", false);
        //            this.Cursor = Cursors.Default;
        //            return;
        //        }

        //        string[] danhsachDaDangKy = new string[0];

        //        WSForm wsForm = new WSForm();
        //        wsForm.ShowDialog(this);
        //        if (!wsForm.IsReady) return;

        //        this.NPLDangKy.WSSend(ref danhsachDaDangKy);

        //        // Thực hiện kiểm tra.
        //        if (this.NPLDangKy.SoTiepNhan == 0)
        //        {
        //            this.updateRowsOnGrid(danhsachDaDangKy);
        //            ShowMessage("Đăng ký không thành công!\nDo có các nguyên phụ liệu đã được đăng ký rồi.\nVui lòng kiểm tra lại các dòng màu đỏ!", false);
        //        }
        //        else
        //        {
        //            ShowMessage("Đăng ký thành công!\nSố tiếp nhận đăng ký điện tử: " + this.NPLDangKy.SoTiepNhan, false);
        //            cmdAdd.Enabled = cmdSend.Enabled = InheritableBoolean.False;
        //        }
        //    }
        //    catch (Exception ex)
        //    {
        //        MessageBox.Show(ex.Message);
        //    }
        //    finally
        //    {
        //        this.Cursor = Cursors.Default;
        //    }
        //}

        ///// <summary>
        ///// Hủy thông tin đăng ký đến Hải quan.
        ///// </summary>
        //private void cancel()
        //{
        //    try
        //    {
        //        this.Cursor = Cursors.WaitCursor;
        //        WSForm wsForm = new WSForm();
        //        wsForm.ShowDialog(this);
        //        if (!wsForm.IsReady) return;

        //        bool result = this.NPLDangKy.WSCancel();
        //        if (result)
        //        {
        //            ShowMessage("Hủy thông tin đăng ký thành công!", false);
        //        }
        //        else
        //        {
        //            ShowMessage("Hủy thông tin đăng ký không thành công!", false);
        //        }
        //    }
        //    catch (Exception ex)
        //    {
        //        MessageBox.Show(ex.Message);
        //    }
        //    finally
        //    {
        //        this.Cursor = Cursors.Default;
        //    }
        //}

        //private void setNeedUpload(bool status)
        //{
        //    this.needUpload = status;
        //    if (status)
        //        cmdUpload1.Enabled = InheritableBoolean.True;
        //    else
        //        cmdUpload1.Enabled = InheritableBoolean.False;
        //}

        //-----------------------------------------------------------------------------------------

        
        #endregion

        //-----------------------------------------------------------------------------------------
        private void dgList_LoadingRow(object sender, RowLoadEventArgs e)
        {
            if (e.Row.RowType == RowType.Record)
            {
                e.Row.Cells["DVT_Ten"].Text = this.DonViTinh_GetName(e.Row.Cells["DVT_ID"].Value.ToString());
            }
        }

        //-----------------------------------------------------------------------------------------
        private void dgList_RowDoubleClick(object sender, RowActionEventArgs e)
        {
            if (this.OpenType != OpenFormType.View)
            {
                GridEXSelectedItemCollection items = dgList.SelectedItems;
                foreach (GridEXSelectedItem i in items)
                {
                    if (i.RowType == RowType.Record)
                    {
                        NguyenPhuLieuEditForm f = new NguyenPhuLieuEditForm();
                        f.MaHaiQuan = txtMaHaiQuan.Text;
                        f.MaDoanhNghiep = GlobalSettings.MA_DON_VI;
                        f.NPLDetail = (NguyenPhuLieu) e.Row.DataRow;
                        f.NPLCollection = this.NPLDangKy.NPLCollection;
                        f.NPLCollection.RemoveAt(i.Position);
                        f.OpenType = OpenFormType.Edit;
                        f.nplDangKy = NPLDangKy;
                        f.ShowDialog();
                        if (f.NPLDetail != null)
                        {
                            this.NPLDangKy.NPLCollection.Insert(i.Position, f.NPLDetail);
                        }
                    }
                    dgList.Refetch();
                    break;
                }
            }
        }

        //-----------------------------------------------------------------------------------------
        private void cmMain_CommandClick(object sender, CommandEventArgs e)
        {
            switch (e.Command.Key)
            {
                case "cmdAdd":
                    this.add();
                    break;
            }
        }

        private void dgList_DeletingRecord(object sender, RowActionCancelEventArgs e)
        {
            if (e.Row.RowType == RowType.Record)
            {
               
            }
        }

        private void dgList_DeletingRecords(object sender, System.ComponentModel.CancelEventArgs e)
        {
            if (ShowMessage("Bạn có muốn xóa nguyên phụ liệu này không?", true) == "Yes")
            {                
                GridEXSelectedItemCollection items = dgList.SelectedItems;
                foreach (GridEXSelectedItem i in items)
                {
                    if (i.RowType == RowType.Record)
                    {
                        NguyenPhuLieu npl = (NguyenPhuLieu)i.GetRow().DataRow;
                        if (npl.ID > 0)
                        {
                            npl.Delete();
                        }
                    }
                }
                NPLDangKy.TrangThaiXuLy = TrangThaiXuLy.CHO_DUYET;
                NPLDangKy.Update();
                lblTrangThai.Text = "Chờ duyệt";
            }
            else
            {
                e.Cancel = true;
            }            
        }
    }
}